import * as React from 'react'; import { debounce } from 'lodash'; import { useRouter } from 'next/router'; import { Footer } from '@/components/Layout/Footer'; import { HeroSection } from '@/components/home/sections'; import ReactHomePage from './index.react'; import ReactNativeHomePage from './index.react-native'; import VueHomePage from './index.vue'; import AngularHomePage from './index.angular'; import FlutterHomePage from './index.flutter'; import { FRAMEWORKS } from '@/data/frameworks'; import { getCustomStaticPath } from '@/utils/getCustomStaticPath'; import SwiftHomePage from './index.swift'; import AndroidHomePage from './index.android'; export async function getStaticPaths() { return getCustomStaticPath(FRAMEWORKS); } /* * `getStaticProps` is required to prevent "Error: getStaticPaths was added without a getStaticProps. Without getStaticProps, getStaticPaths does nothing" */ export async function getStaticProps() { return { props: {} }; } const handleScroll = debounce((e) => { const bodyScroll = e.target.documentElement.scrollTop; if (bodyScroll > 50) { document.body.classList.add('scrolled'); } else if (document.body.classList.contains('scrolled')) { document.body.classList.remove('scrolled'); } }); const HomePage = ({ colorMode }) => { const { query: { platform = 'react' }, } = useRouter(); React.useEffect(() => { document.addEventListener('scroll', handleScroll); return () => { document.removeEventListener('scroll', handleScroll); }; }, []); let pageContent; switch (platform) { case 'react': pageContent = ; break; case 'vue': pageContent = ; break; case 'angular': pageContent = ; break; case 'flutter': pageContent = ; break; case 'react-native': pageContent = ; break; case 'android': pageContent = ; break; case 'swift': pageContent = null; break; default: pageContent = ; break; } return ( <> {/* Hero/intro */} {/* Framework content */} {pageContent} {/* Shared content */}